"""什么是Python中的lambda函数？"""

#在Python中，匿名函数是没有定义名称的函数。
#虽然def在Python中使用关键字定义了普通函数，但使用关键字定义了匿名函数lambda。
#因此，匿名函数也称为lambda函数。

"""如何在Python中使用lambda函数？"""

"""python中Lambda函数的语法
lambda arguments: expression"""

#Lambda函数可以具有任意数量的参数，但只能有一个表达式。表达式被求值并返回。Lambda函数可在需要函数对象的任何地方使用。

# 程序展示lambda函数的使用
double = lambda x: x * 2

print(double(5))

#在上面的程序中，lambda x: x * 2是lambda函数。这里x是参数，x * 2是求值和返回的表达式。
#这个函数没有名字。它返回一个函数对象，该对象被分配给标识符double。我们现在可以把它叫做普通函数。下面声明

double = lambda x: x * 2
#等同于：
def double(x):
   return x * 2

"""在python中使用Lambda函数"""

#当我们临时需要匿名函数时，我们使用lambda函数。
#在Python中，我们通常将其用作高阶函数的参数（该函数将其他函数作为arguments）。Lambda函数可以与filter()，map()等内置函数一起使用。

#lambda与filter()一起使用的示例
#在Python函数中filter()接受一个函数和一个列表作为参数。
#使用列表中的所有项调用该函数，并返回一个新列表，其中包含函数计算结果为True的项。
#这是使用filter()函数从列表中仅滤除偶数的示例。

# 程序从列表中过滤出偶数项
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(filter(lambda x: (x%2 == 0) , my_list))
print(new_list)

#lambda与map()一起使用的示例
#在Python中的map()函数接受一个函数和一个列表。
#使用列表中的所有项调用该函数，并返回一个新列表，其中包含该函数为每个项返回的项。
#这是使用map()函数将列表中所有项目翻倍的示例。

# 使用map()将列表中的每个项加倍

my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(map(lambda x: x * 2 , my_list))
print(new_list)